In computing systems, computers and other resources may not reside at the same or neighboring physical locations. Some computers, e.g., hosting servers, may be at one location while the resources, such as the storage arrays, may be at various other locations remote from the hosts. Transferring data in these systems commonly uses the Ethernet and/or Fiber channel switches, which switch or route the data. However, Ethernet switches, like many other connection fabrics, use physical wires with associated technology-specific protocols, and a protocol is normally designed for a particular fabric, but does not work with another fabric. As a result, a fabric supports only one protocol. For example, an Ethernet fabric uses the Ethernet protocol to process Ethernet packets, a Fiber channel fabric uses the Fiber channel protocol to process Fiber channel packets, an Infiniband fabric uses the Infiniband protocol to process Infiniband packets, etc.
Current utility data centers typically include more than one type of fabric in which various systems customized for various customers may share the same fabric for the same technology, e.g., Ethernet fabric for Ethernet packets, Fiber channel for Fiber packets, etc. Unfortunately, systems sharing the same fabric may be able to interfere with operations of one another.
For almost all fabrics, when the number of resources increases, particularly in large-scale systems, transferring data between the resources is more complicated, and a fabric may encounter its limitation. This is because the high data volumes usually require complicated networking infrastructure, including hierarchical trees and/or meshes. In many cases, a simple bottleneck within a fabric may slow the whole system. For example, in a hierarchical tree, data from one side of the tree must traverse to the top node before arriving at its destination on the other side. A bottleneck at the top node thus can slow the data movements between the two sides and/or limit the ability to relocate resources from one side to another side. As the number of resources increases, the number of wires or cables connecting the resources also increases. Further, large-scale systems in data centers also tend to use expensive storage arrays to implement securities, to provide programmability features, virtual disk arrangements, etc. These storage arrays and their corresponding fabrics must support very high bandwidths to reduce performance interactions between systems.
Based on the foregoing, it is desirable that mechanisms be provided to solve the above deficiencies and related problems.